package org.example.template;

public abstract class HummerModel {
    /** 首先，这个模型要能够被发动起来，别管是手摇发动，
     * 还是电力发动，反正 * 是要能够发动起来，那这个实现要在实现类里了
     */
    protected abstract void start();

    protected abstract void stop();

    //喇叭会出声音，是滴滴叫，还是哔哔叫
    protected abstract void alarm();
    //引擎会轰隆隆的响，不响那是假的
    protected abstract void engineBoom();

    //模板方法
    final public void run(){
        this.start();
        this.engineBoom();
        if (this.isAlarm()){
            this.alarm();
        }
    }

    protected boolean isAlarm(){
        return true;
    }
}
